package com.goldmantis.alitrip.pojo;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.goldmantis.alitrip.common.annotation.*;

import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.Date;

@Table(name = "sys_user")
@ApiModel("sys_user")
public class SysUser {
    @Id
    @Column(name = "USERID")
    @NotNull
    private Long userid;

    /**
     * 姓名
     */
    @Column(name = "FULLNAME")
    @Display("姓名")
    @ApiModelProperty("姓名")
    @Size(min = 0, max = 127 , message = "长度必须在{min}和{max}之间")
    private String fullname;

    /**
     * 帐号
     */
    @Column(name = "ACCOUNT")
    @Display("帐号")
    @ApiModelProperty("帐号")
    @NotNull
    @Size(min = 0, max = 50 , message = "长度必须在{min}和{max}之间")
    private String account;

    /**
     * 密码
     */
    @Column(name = "PASSWORD")
    @Display("密码")
    @ApiModelProperty("密码")
    @Size(min = 0, max = 50 , message = "长度必须在{min}和{max}之间")
    private String password;

    /**
     * 是否过期
     */
    @Column(name = "ISEXPIRED")
    @Display("是否过期")
    @ApiModelProperty("是否过期")
    private Short isexpired;

    /**
     * 是否锁定
     */
    @Column(name = "ISLOCK")
    @Display("是否锁定")
    @ApiModelProperty("是否锁定")
    private Short islock;

    /**
     * 创建时间
     */
    @Column(name = "CREATETIME")
    @Display("创建时间")
    @ApiModelProperty("创建时间")
    private Date createtime;

    /**
     * 状态
            1=激活
            0=禁用
            -1=删除
     */
    @Column(name = "STATUS")
    @Display("状态            1=激活            0=禁用            -1=删除")
    @ApiModelProperty("状态            1=激活            0=禁用            -1=删除")
    private Short status;

    /**
     * 邮箱
     */
    @Column(name = "EMAIL")
    @Display("邮箱")
    @ApiModelProperty("邮箱")
    @Size(min = 0, max = 128 , message = "长度必须在{min}和{max}之间")
    private String email;

    /**
     * 手机
     */
    @Column(name = "MOBILE")
    @Display("手机")
    @ApiModelProperty("手机")
    @Size(min = 0, max = 32 , message = "长度必须在{min}和{max}之间")
    private String mobile;

    /**
     * 电话
     */
    @Column(name = "PHONE")
    @Display("电话")
    @ApiModelProperty("电话")
    @Size(min = 0, max = 32 , message = "长度必须在{min}和{max}之间")
    private String phone;

    /**
     * 1=男
            0=女
     */
    @Column(name = "SEX")
    @Display("1=男            0=女")
    @ApiModelProperty("1=男            0=女")
    @Size(min = 0, max = 10 , message = "长度必须在{min}和{max}之间")
    private String sex;

    @Column(name = "PICTURE")
    @Size(min = 0, max = 300 , message = "长度必须在{min}和{max}之间")
    private String picture;

    /**
     * 入职日期
     */
    @Column(name = "ENTRYDATE")
    @Display("入职日期")
    @ApiModelProperty("入职日期")
    private Date entrydate;

    /**
     * 员工状态
     */
    @Column(name = "USERSTATUS")
    @Display("员工状态")
    @ApiModelProperty("员工状态")
    @Size(min = 0, max = 32 , message = "长度必须在{min}和{max}之间")
    private String userstatus;

    /**
     * 数据来源
     */
    @Column(name = "FROMTYPE")
    @Display("数据来源")
    @ApiModelProperty("数据来源")
    private Short fromtype;

    /**
     * 密码更新时间
     */
    @Column(name = "pwdUpdTime")
    @Display("密码更新时间")
    @ApiModelProperty("密码更新时间")
    private Date pwdupdtime;

    /**
     * 微信id
     */
    @Column(name = "WEIXINID")
    @Display("微信id")
    @ApiModelProperty("微信id")
    @Size(min = 0, max = 20 , message = "长度必须在{min}和{max}之间")
    private String weixinid;

    @Column(name = "HASSYNCTOWX")
    private Short hassynctowx;

    /**
     * 员工工号
     */
    @Column(name = "job_number")
    @Display("员工工号")
    @ApiModelProperty("员工工号")
    @Size(min = 0, max = 100 , message = "长度必须在{min}和{max}之间")
    private String jobNumber;

    /**
     * 身份类型
     */
    @Column(name = "identity_type")
    @Display("身份类型")
    @ApiModelProperty("身份类型")
    @Size(min = 0, max = 100 , message = "长度必须在{min}和{max}之间")
    private String identityType;

    /**
     * 身份类型号码
     */
    @Column(name = "identity_type_number")
    @Display("身份类型号码")
    @ApiModelProperty("身份类型号码")
    @Size(min = 0, max = 255 , message = "长度必须在{min}和{max}之间")
    private String identityTypeNumber;

    /**
     * 创建人
     */
    @Column(name = "create_by")
    @Display("创建人")
    @ApiModelProperty("创建人")
    private Long createBy;

    /**
     * 更新时间
     */
    @Column(name = "UPDATETIME")
    @Display("更新时间")
    @ApiModelProperty("更新时间")
    private Date updatetime;

    /**
     * 更新人id
     */
    @Column(name = "update_by")
    @Display("更新人id")
    @ApiModelProperty("更新人id")
    private Long updateBy;

    @Column(name = "hr_id")
    private Long hrId;

    /**
     * @return USERID
     */
    public Long getUserid() {
        return userid;
    }

    /**
     * @param userid
     */
    public void setUserid(Long userid) {
        this.userid = userid;
    }

    /**
     * 获取姓名
     *
     * @return FULLNAME - 姓名
     */
    public String getFullname() {
        return fullname;
    }

    /**
     * 设置姓名
     *
     * @param fullname 姓名
     */
    public void setFullname(String fullname) {
        this.fullname = fullname == null ? null : fullname.trim();
    }

    /**
     * 获取帐号
     *
     * @return ACCOUNT - 帐号
     */
    public String getAccount() {
        return account;
    }

    /**
     * 设置帐号
     *
     * @param account 帐号
     */
    public void setAccount(String account) {
        this.account = account == null ? null : account.trim();
    }

    /**
     * 获取密码
     *
     * @return PASSWORD - 密码
     */
    public String getPassword() {
        return password;
    }

    /**
     * 设置密码
     *
     * @param password 密码
     */
    public void setPassword(String password) {
        this.password = password == null ? null : password.trim();
    }

    /**
     * 获取是否过期
     *
     * @return ISEXPIRED - 是否过期
     */
    public Short getIsexpired() {
        return isexpired;
    }

    /**
     * 设置是否过期
     *
     * @param isexpired 是否过期
     */
    public void setIsexpired(Short isexpired) {
        this.isexpired = isexpired;
    }

    /**
     * 获取是否锁定
     *
     * @return ISLOCK - 是否锁定
     */
    public Short getIslock() {
        return islock;
    }

    /**
     * 设置是否锁定
     *
     * @param islock 是否锁定
     */
    public void setIslock(Short islock) {
        this.islock = islock;
    }

    /**
     * 获取创建时间
     *
     * @return CREATETIME - 创建时间
     */
    public Date getCreatetime() {
        return createtime;
    }

    /**
     * 设置创建时间
     *
     * @param createtime 创建时间
     */
    public void setCreatetime(Date createtime) {
        this.createtime = createtime;
    }

    /**
     * 获取状态
            1=激活
            0=禁用
            -1=删除
     *
     * @return STATUS - 状态
            1=激活
            0=禁用
            -1=删除
     */
    public Short getStatus() {
        return status;
    }

    /**
     * 设置状态
            1=激活
            0=禁用
            -1=删除
     *
     * @param status 状态
            1=激活
            0=禁用
            -1=删除
     */
    public void setStatus(Short status) {
        this.status = status;
    }

    /**
     * 获取邮箱
     *
     * @return EMAIL - 邮箱
     */
    public String getEmail() {
        return email;
    }

    /**
     * 设置邮箱
     *
     * @param email 邮箱
     */
    public void setEmail(String email) {
        this.email = email == null ? null : email.trim();
    }

    /**
     * 获取手机
     *
     * @return MOBILE - 手机
     */
    public String getMobile() {
        return mobile;
    }

    /**
     * 设置手机
     *
     * @param mobile 手机
     */
    public void setMobile(String mobile) {
        this.mobile = mobile == null ? null : mobile.trim();
    }

    /**
     * 获取电话
     *
     * @return PHONE - 电话
     */
    public String getPhone() {
        return phone;
    }

    /**
     * 设置电话
     *
     * @param phone 电话
     */
    public void setPhone(String phone) {
        this.phone = phone == null ? null : phone.trim();
    }

    /**
     * 获取1=男
            0=女
     *
     * @return SEX - 1=男
            0=女
     */
    public String getSex() {
        return sex;
    }

    /**
     * 设置1=男
            0=女
     *
     * @param sex 1=男
            0=女
     */
    public void setSex(String sex) {
        this.sex = sex == null ? null : sex.trim();
    }

    /**
     * @return PICTURE
     */
    public String getPicture() {
        return picture;
    }

    /**
     * @param picture
     */
    public void setPicture(String picture) {
        this.picture = picture == null ? null : picture.trim();
    }

    /**
     * 获取入职日期
     *
     * @return ENTRYDATE - 入职日期
     */
    public Date getEntrydate() {
        return entrydate;
    }

    /**
     * 设置入职日期
     *
     * @param entrydate 入职日期
     */
    public void setEntrydate(Date entrydate) {
        this.entrydate = entrydate;
    }

    /**
     * 获取员工状态
     *
     * @return USERSTATUS - 员工状态
     */
    public String getUserstatus() {
        return userstatus;
    }

    /**
     * 设置员工状态
     *
     * @param userstatus 员工状态
     */
    public void setUserstatus(String userstatus) {
        this.userstatus = userstatus == null ? null : userstatus.trim();
    }

    /**
     * 获取数据来源
     *
     * @return FROMTYPE - 数据来源
     */
    public Short getFromtype() {
        return fromtype;
    }

    /**
     * 设置数据来源
     *
     * @param fromtype 数据来源
     */
    public void setFromtype(Short fromtype) {
        this.fromtype = fromtype;
    }

    /**
     * 获取密码更新时间
     *
     * @return pwdUpdTime - 密码更新时间
     */
    public Date getPwdupdtime() {
        return pwdupdtime;
    }

    /**
     * 设置密码更新时间
     *
     * @param pwdupdtime 密码更新时间
     */
    public void setPwdupdtime(Date pwdupdtime) {
        this.pwdupdtime = pwdupdtime;
    }

    /**
     * 获取微信id
     *
     * @return WEIXINID - 微信id
     */
    public String getWeixinid() {
        return weixinid;
    }

    /**
     * 设置微信id
     *
     * @param weixinid 微信id
     */
    public void setWeixinid(String weixinid) {
        this.weixinid = weixinid == null ? null : weixinid.trim();
    }

    /**
     * @return HASSYNCTOWX
     */
    public Short getHassynctowx() {
        return hassynctowx;
    }

    /**
     * @param hassynctowx
     */
    public void setHassynctowx(Short hassynctowx) {
        this.hassynctowx = hassynctowx;
    }

    /**
     * 获取员工工号
     *
     * @return job_number - 员工工号
     */
    public String getJobNumber() {
        return jobNumber;
    }

    /**
     * 设置员工工号
     *
     * @param jobNumber 员工工号
     */
    public void setJobNumber(String jobNumber) {
        this.jobNumber = jobNumber == null ? null : jobNumber.trim();
    }

    /**
     * 获取身份类型
     *
     * @return identity_type - 身份类型
     */
    public String getIdentityType() {
        return identityType;
    }

    /**
     * 设置身份类型
     *
     * @param identityType 身份类型
     */
    public void setIdentityType(String identityType) {
        this.identityType = identityType == null ? null : identityType.trim();
    }

    /**
     * 获取身份类型号码
     *
     * @return identity_type_number - 身份类型号码
     */
    public String getIdentityTypeNumber() {
        return identityTypeNumber;
    }

    /**
     * 设置身份类型号码
     *
     * @param identityTypeNumber 身份类型号码
     */
    public void setIdentityTypeNumber(String identityTypeNumber) {
        this.identityTypeNumber = identityTypeNumber == null ? null : identityTypeNumber.trim();
    }

    /**
     * 获取创建人
     *
     * @return create_by - 创建人
     */
    public Long getCreateBy() {
        return createBy;
    }

    /**
     * 设置创建人
     *
     * @param createBy 创建人
     */
    public void setCreateBy(Long createBy) {
        this.createBy = createBy;
    }

    /**
     * 获取更新时间
     *
     * @return UPDATETIME - 更新时间
     */
    public Date getUpdatetime() {
        return updatetime;
    }

    /**
     * 设置更新时间
     *
     * @param updatetime 更新时间
     */
    public void setUpdatetime(Date updatetime) {
        this.updatetime = updatetime;
    }

    /**
     * 获取更新人id
     *
     * @return update_by - 更新人id
     */
    public Long getUpdateBy() {
        return updateBy;
    }

    /**
     * 设置更新人id
     *
     * @param updateBy 更新人id
     */
    public void setUpdateBy(Long updateBy) {
        this.updateBy = updateBy;
    }

    /**
     * @return hr_id
     */
    public Long getHrId() {
        return hrId;
    }

    /**
     * @param hrId
     */
    public void setHrId(Long hrId) {
        this.hrId = hrId;
    }



    @Display("部门名称")
    @Transient
    @ApiModelProperty("部门名称")
    private String orgName;

    @Transient
    @Display("岗位名称")
    @ApiModelProperty("岗位名称")
    private String posName;

    public String getOrgName() {
        return orgName;
    }

    public void setOrgName(String orgName) {
        this.orgName = orgName;
    }

    public String getPosName() {
        return posName;
    }

    public void setPosName(String posName) {
        this.posName = posName;
    }

    @Transient
    @Display("用户管理根据角色查找用户信息")
    @ApiModelProperty("用户管理根据角色查找用户信息")
    private String roleNames;

    public String getRoleNames() {
        return roleNames;
    }

    public void setRoleNames(String roleNames) {
        this.roleNames = roleNames;
    }
}